Hands-on Exercise 11:[Cont.] GWR

Author

William

Published

October 18, 2024

Modified

October 27, 2024

pacman::p_load(olsrr, corrplot, ggpubr, sf, spdep, GWmodel, tmap, tidyverse, gtsummary)

Reusing derived data from previous section,

condo_resale.sp = read_rds('data/rds/condo_resale_sp.rds')
mpsz_3414 = read_rds('data/rds/mpsz_3414.rds')

Building Fixed Bandwidth GWR Model

# compute fixed BW using bw.gwr() from GWModel
bw.fixed <- bw.gwr(
    formula = SELLING_PRICE ~ 
        AREA_SQM + AGE + PROX_CBD + PROX_CHILDCARE + 
        PROX_ELDERLYCARE  + PROX_URA_GROWTH_AREA + 
        PROX_MRT   + PROX_PARK + PROX_PRIMARY_SCH + 
        PROX_SHOPPING_MALL + PROX_BUS_STOP + NO_Of_UNITS + 
        FAMILY_FRIENDLY + FREEHOLD, 
    data=condo_resale.sp, 
    approach="CV", # cross-validation
    kernel="gaussian", 
    adaptive=FALSE, 
    longlat=FALSE)
Fixed bandwidth: 17660.96 CV score: 8.259118e+14 
Fixed bandwidth: 10917.26 CV score: 7.970454e+14 
Fixed bandwidth: 6749.419 CV score: 7.273273e+14 
Fixed bandwidth: 4173.553 CV score: 6.300006e+14 
Fixed bandwidth: 2581.58 CV score: 5.404958e+14 
Fixed bandwidth: 1597.687 CV score: 4.857515e+14 
Fixed bandwidth: 989.6077 CV score: 4.722431e+14 
Fixed bandwidth: 613.7939 CV score: 1.379526e+16 
Fixed bandwidth: 1221.873 CV score: 4.778717e+14 
Fixed bandwidth: 846.0596 CV score: 4.791629e+14 
Fixed bandwidth: 1078.325 CV score: 4.751406e+14 
Fixed bandwidth: 934.7772 CV score: 4.72518e+14 
Fixed bandwidth: 1023.495 CV score: 4.730305e+14 
Fixed bandwidth: 968.6643 CV score: 4.721317e+14 
Fixed bandwidth: 955.7206 CV score: 4.722072e+14 
Fixed bandwidth: 976.6639 CV score: 4.721387e+14 
Fixed bandwidth: 963.7202 CV score: 4.721484e+14 
Fixed bandwidth: 971.7199 CV score: 4.721293e+14 
Fixed bandwidth: 973.6083 CV score: 4.721309e+14 
Fixed bandwidth: 970.5527 CV score: 4.721295e+14 
Fixed bandwidth: 972.4412 CV score: 4.721296e+14 
Fixed bandwidth: 971.2741 CV score: 4.721292e+14 
Fixed bandwidth: 970.9985 CV score: 4.721293e+14 
Fixed bandwidth: 971.4443 CV score: 4.721292e+14 
Fixed bandwidth: 971.5496 CV score: 4.721293e+14 
Fixed bandwidth: 971.3793 CV score: 4.721292e+14 
Fixed bandwidth: 971.3391 CV score: 4.721292e+14 
Fixed bandwidth: 971.3143 CV score: 4.721292e+14 
Fixed bandwidth: 971.3545 CV score: 4.721292e+14 
Fixed bandwidth: 971.3296 CV score: 4.721292e+14 
Fixed bandwidth: 971.345 CV score: 4.721292e+14 
Fixed bandwidth: 971.3355 CV score: 4.721292e+14 
Fixed bandwidth: 971.3413 CV score: 4.721292e+14 
Fixed bandwidth: 971.3377 CV score: 4.721292e+14 
Fixed bandwidth: 971.34 CV score: 4.721292e+14 
Fixed bandwidth: 971.3405 CV score: 4.721292e+14 
Fixed bandwidth: 971.3396 CV score: 4.721292e+14 
Fixed bandwidth: 971.3402 CV score: 4.721292e+14 
Fixed bandwidth: 971.3398 CV score: 4.721292e+14 
Fixed bandwidth: 971.34 CV score: 4.721292e+14 
Fixed bandwidth: 971.3399 CV score: 4.721292e+14 
Fixed bandwidth: 971.34 CV score: 4.721292e+14 

Recommend BW = 971.34 metres

Unit of measurement is in metres because of WGS84 datum used by its CRS

# use recommend BW and gaussian kernel to calibrate GWR mode
gwr.fixed <- gwr.basic(
    formula = SELLING_PRICE ~ 
        AREA_SQM + AGE + PROX_CBD + PROX_CHILDCARE + 
        PROX_ELDERLYCARE  + PROX_URA_GROWTH_AREA + 
        PROX_MRT   + PROX_PARK + PROX_PRIMARY_SCH + 
        PROX_SHOPPING_MALL + PROX_BUS_STOP + NO_Of_UNITS + 
        FAMILY_FRIENDLY + FREEHOLD, 
    data=condo_resale.sp, 
    bw=bw.fixed, 
    kernel = 'gaussian', 
    longlat = FALSE)
gwr.fixed
   ***********************************************************************
   *                       Package   GWmodel                             *
   ***********************************************************************
   Program starts at: 2024-10-28 00:10:00.104743 
   Call:
   gwr.basic(formula = SELLING_PRICE ~ AREA_SQM + AGE + PROX_CBD + 
    PROX_CHILDCARE + PROX_ELDERLYCARE + PROX_URA_GROWTH_AREA + 
    PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH + PROX_SHOPPING_MALL + 
    PROX_BUS_STOP + NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD, 
    data = condo_resale.sp, bw = bw.fixed, kernel = "gaussian", 
    longlat = FALSE)

   Dependent (y) variable:  SELLING_PRICE
   Independent variables:  AREA_SQM AGE PROX_CBD PROX_CHILDCARE PROX_ELDERLYCARE PROX_URA_GROWTH_AREA PROX_MRT PROX_PARK PROX_PRIMARY_SCH PROX_SHOPPING_MALL PROX_BUS_STOP NO_Of_UNITS FAMILY_FRIENDLY FREEHOLD
   Number of data points: 1436
   ***********************************************************************
   *                    Results of Global Regression                     *
   ***********************************************************************

   Call:
    lm(formula = formula, data = data)

   Residuals:
     Min       1Q   Median       3Q      Max 
-3470778  -298119   -23481   248917 12234210 

   Coefficients:
                          Estimate Std. Error t value Pr(>|t|)    
   (Intercept)           527633.22  108183.22   4.877 1.20e-06 ***
   AREA_SQM               12777.52     367.48  34.771  < 2e-16 ***
   AGE                   -24687.74    2754.84  -8.962  < 2e-16 ***
   PROX_CBD              -77131.32    5763.12 -13.384  < 2e-16 ***
   PROX_CHILDCARE       -318472.75  107959.51  -2.950 0.003231 ** 
   PROX_ELDERLYCARE      185575.62   39901.86   4.651 3.61e-06 ***
   PROX_URA_GROWTH_AREA   39163.25   11754.83   3.332 0.000885 ***
   PROX_MRT             -294745.11   56916.37  -5.179 2.56e-07 ***
   PROX_PARK             570504.81   65507.03   8.709  < 2e-16 ***
   PROX_PRIMARY_SCH      159856.14   60234.60   2.654 0.008046 ** 
   PROX_SHOPPING_MALL   -220947.25   36561.83  -6.043 1.93e-09 ***
   PROX_BUS_STOP         682482.22  134513.24   5.074 4.42e-07 ***
   NO_Of_UNITS             -245.48      87.95  -2.791 0.005321 ** 
   FAMILY_FRIENDLY       146307.58   46893.02   3.120 0.001845 ** 
   FREEHOLD              350599.81   48506.48   7.228 7.98e-13 ***

   ---Significance stars
   Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
   Residual standard error: 756000 on 1421 degrees of freedom
   Multiple R-squared: 0.6507
   Adjusted R-squared: 0.6472 
   F-statistic: 189.1 on 14 and 1421 DF,  p-value: < 2.2e-16 
   ***Extra Diagnostic information
   Residual sum of squares: 8.120609e+14
   Sigma(hat): 752522.9
   AIC:  42966.76
   AICc:  42967.14
   BIC:  41731.39
   ***********************************************************************
   *          Results of Geographically Weighted Regression              *
   ***********************************************************************

   *********************Model calibration information*********************
   Kernel function: gaussian 
   Fixed bandwidth: 971.34 
   Regression points: the same locations as observations are used.
   Distance metric: Euclidean distance metric is used.

   ****************Summary of GWR coefficient estimates:******************
                               Min.     1st Qu.      Median     3rd Qu.
   Intercept            -3.5988e+07 -5.1998e+05  7.6780e+05  1.7412e+06
   AREA_SQM              1.0003e+03  5.2758e+03  7.4740e+03  1.2301e+04
   AGE                  -1.3475e+05 -2.0813e+04 -8.6260e+03 -3.7784e+03
   PROX_CBD             -7.7047e+07 -2.3608e+05 -8.3599e+04  3.4646e+04
   PROX_CHILDCARE       -6.0097e+06 -3.3667e+05 -9.7426e+04  2.9007e+05
   PROX_ELDERLYCARE     -3.5001e+06 -1.5970e+05  3.1970e+04  1.9577e+05
   PROX_URA_GROWTH_AREA -3.0170e+06 -8.2013e+04  7.0749e+04  2.2612e+05
   PROX_MRT             -3.5282e+06 -6.5836e+05 -1.8833e+05  3.6922e+04
   PROX_PARK            -1.2062e+06 -2.1732e+05  3.5383e+04  4.1335e+05
   PROX_PRIMARY_SCH     -2.2695e+07 -1.7066e+05  4.8472e+04  5.1555e+05
   PROX_SHOPPING_MALL   -7.2585e+06 -1.6684e+05 -1.0517e+04  1.5923e+05
   PROX_BUS_STOP        -1.4676e+06 -4.5207e+04  3.7601e+05  1.1664e+06
   NO_Of_UNITS          -1.3170e+03 -2.4822e+02 -3.0846e+01  2.5496e+02
   FAMILY_FRIENDLY      -2.2749e+06 -1.1140e+05  7.6214e+03  1.6107e+05
   FREEHOLD             -9.2067e+06  3.8074e+04  1.5169e+05  3.7528e+05
                             Max.
   Intercept            112794435
   AREA_SQM                 21575
   AGE                     434203
   PROX_CBD               2704604
   PROX_CHILDCARE         1654086
   PROX_ELDERLYCARE      38867861
   PROX_URA_GROWTH_AREA  78515805
   PROX_MRT               3124325
   PROX_PARK             18122439
   PROX_PRIMARY_SCH       4637517
   PROX_SHOPPING_MALL     1529953
   PROX_BUS_STOP         11342209
   NO_Of_UNITS              12907
   FAMILY_FRIENDLY        1720745
   FREEHOLD               6073642
   ************************Diagnostic information*************************
   Number of data points: 1436 
   Effective number of parameters (2trace(S) - trace(S'S)): 438.3807 
   Effective degrees of freedom (n-2trace(S) + trace(S'S)): 997.6193 
   AICc (GWR book, Fotheringham, et al. 2002, p. 61, eq 2.33): 42263.61 
   AIC (GWR book, Fotheringham, et al. 2002,GWR p. 96, eq. 4.22): 41632.36 
   BIC (GWR book, Fotheringham, et al. 2002,GWR p. 61, eq. 2.34): 42515.71 
   Residual sum of squares: 2.534069e+14 
   R-square value:  0.8909912 
   Adjusted R-square value:  0.8430418 

   ***********************************************************************
   Program stops at: 2024-10-28 00:10:00.668546 

AIC corrected of the GWR Model = 42263.61 > AIC corrected of global regression

Building Adaptive Bandwidth GWR Model

# compute BW
bw.adaptive <- bw.gwr(formula = SELLING_PRICE ~ AREA_SQM + AGE  + 
                        PROX_CBD + PROX_CHILDCARE + PROX_ELDERLYCARE    + 
                        PROX_URA_GROWTH_AREA + PROX_MRT + PROX_PARK + 
                        PROX_PRIMARY_SCH + PROX_SHOPPING_MALL   + PROX_BUS_STOP +
                        NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD, 
                      data=condo_resale.sp, 
                      approach="CV", 
                      kernel="gaussian", 
                      adaptive=TRUE, # set to true
                      longlat=FALSE)
Adaptive bandwidth: 895 CV score: 7.952401e+14 
Adaptive bandwidth: 561 CV score: 7.667364e+14 
Adaptive bandwidth: 354 CV score: 6.953454e+14 
Adaptive bandwidth: 226 CV score: 6.15223e+14 
Adaptive bandwidth: 147 CV score: 5.674373e+14 
Adaptive bandwidth: 98 CV score: 5.426745e+14 
Adaptive bandwidth: 68 CV score: 5.168117e+14 
Adaptive bandwidth: 49 CV score: 4.859631e+14 
Adaptive bandwidth: 37 CV score: 4.646518e+14 
Adaptive bandwidth: 30 CV score: 4.422088e+14 
Adaptive bandwidth: 25 CV score: 4.430816e+14 
Adaptive bandwidth: 32 CV score: 4.505602e+14 
Adaptive bandwidth: 27 CV score: 4.462172e+14 
Adaptive bandwidth: 30 CV score: 4.422088e+14 

Recommended number of data points to use = 30

# calibrate using a.BW GWR model
gwr.adaptive <- gwr.basic(formula = SELLING_PRICE ~ AREA_SQM + AGE + 
                            PROX_CBD + PROX_CHILDCARE + PROX_ELDERLYCARE + 
                            PROX_URA_GROWTH_AREA + PROX_MRT + PROX_PARK + 
                            PROX_PRIMARY_SCH + PROX_SHOPPING_MALL + PROX_BUS_STOP + 
                            NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD, 
                          data=condo_resale.sp, bw=bw.adaptive, 
                          kernel = 'gaussian', 
                          adaptive=TRUE, 
                          longlat = FALSE)
gwr.adaptive
   ***********************************************************************
   *                       Package   GWmodel                             *
   ***********************************************************************
   Program starts at: 2024-10-28 00:10:05.350122 
   Call:
   gwr.basic(formula = SELLING_PRICE ~ AREA_SQM + AGE + PROX_CBD + 
    PROX_CHILDCARE + PROX_ELDERLYCARE + PROX_URA_GROWTH_AREA + 
    PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH + PROX_SHOPPING_MALL + 
    PROX_BUS_STOP + NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD, 
    data = condo_resale.sp, bw = bw.adaptive, kernel = "gaussian", 
    adaptive = TRUE, longlat = FALSE)

   Dependent (y) variable:  SELLING_PRICE
   Independent variables:  AREA_SQM AGE PROX_CBD PROX_CHILDCARE PROX_ELDERLYCARE PROX_URA_GROWTH_AREA PROX_MRT PROX_PARK PROX_PRIMARY_SCH PROX_SHOPPING_MALL PROX_BUS_STOP NO_Of_UNITS FAMILY_FRIENDLY FREEHOLD
   Number of data points: 1436
   ***********************************************************************
   *                    Results of Global Regression                     *
   ***********************************************************************

   Call:
    lm(formula = formula, data = data)

   Residuals:
     Min       1Q   Median       3Q      Max 
-3470778  -298119   -23481   248917 12234210 

   Coefficients:
                          Estimate Std. Error t value Pr(>|t|)    
   (Intercept)           527633.22  108183.22   4.877 1.20e-06 ***
   AREA_SQM               12777.52     367.48  34.771  < 2e-16 ***
   AGE                   -24687.74    2754.84  -8.962  < 2e-16 ***
   PROX_CBD              -77131.32    5763.12 -13.384  < 2e-16 ***
   PROX_CHILDCARE       -318472.75  107959.51  -2.950 0.003231 ** 
   PROX_ELDERLYCARE      185575.62   39901.86   4.651 3.61e-06 ***
   PROX_URA_GROWTH_AREA   39163.25   11754.83   3.332 0.000885 ***
   PROX_MRT             -294745.11   56916.37  -5.179 2.56e-07 ***
   PROX_PARK             570504.81   65507.03   8.709  < 2e-16 ***
   PROX_PRIMARY_SCH      159856.14   60234.60   2.654 0.008046 ** 
   PROX_SHOPPING_MALL   -220947.25   36561.83  -6.043 1.93e-09 ***
   PROX_BUS_STOP         682482.22  134513.24   5.074 4.42e-07 ***
   NO_Of_UNITS             -245.48      87.95  -2.791 0.005321 ** 
   FAMILY_FRIENDLY       146307.58   46893.02   3.120 0.001845 ** 
   FREEHOLD              350599.81   48506.48   7.228 7.98e-13 ***

   ---Significance stars
   Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
   Residual standard error: 756000 on 1421 degrees of freedom
   Multiple R-squared: 0.6507
   Adjusted R-squared: 0.6472 
   F-statistic: 189.1 on 14 and 1421 DF,  p-value: < 2.2e-16 
   ***Extra Diagnostic information
   Residual sum of squares: 8.120609e+14
   Sigma(hat): 752522.9
   AIC:  42966.76
   AICc:  42967.14
   BIC:  41731.39
   ***********************************************************************
   *          Results of Geographically Weighted Regression              *
   ***********************************************************************

   *********************Model calibration information*********************
   Kernel function: gaussian 
   Adaptive bandwidth: 30 (number of nearest neighbours)
   Regression points: the same locations as observations are used.
   Distance metric: Euclidean distance metric is used.

   ****************Summary of GWR coefficient estimates:******************
                               Min.     1st Qu.      Median     3rd Qu.
   Intercept            -1.3487e+08 -2.4669e+05  7.7928e+05  1.6194e+06
   AREA_SQM              3.3188e+03  5.6285e+03  7.7825e+03  1.2738e+04
   AGE                  -9.6746e+04 -2.9288e+04 -1.4043e+04 -5.6119e+03
   PROX_CBD             -2.5330e+06 -1.6256e+05 -7.7242e+04  2.6624e+03
   PROX_CHILDCARE       -1.2790e+06 -2.0175e+05  8.7158e+03  3.7778e+05
   PROX_ELDERLYCARE     -1.6212e+06 -9.2050e+04  6.1029e+04  2.8184e+05
   PROX_URA_GROWTH_AREA -7.2686e+06 -3.0350e+04  4.5869e+04  2.4613e+05
   PROX_MRT             -4.3781e+07 -6.7282e+05 -2.2115e+05 -7.4593e+04
   PROX_PARK            -2.9020e+06 -1.6782e+05  1.1601e+05  4.6572e+05
   PROX_PRIMARY_SCH     -8.6418e+05 -1.6627e+05 -7.7853e+03  4.3222e+05
   PROX_SHOPPING_MALL   -1.8272e+06 -1.3175e+05 -1.4049e+04  1.3799e+05
   PROX_BUS_STOP        -2.0579e+06 -7.1461e+04  4.1104e+05  1.2071e+06
   NO_Of_UNITS          -2.1993e+03 -2.3685e+02 -3.4699e+01  1.1657e+02
   FAMILY_FRIENDLY      -5.9879e+05 -5.0927e+04  2.6173e+04  2.2481e+05
   FREEHOLD             -1.6340e+05  4.0765e+04  1.9023e+05  3.7960e+05
                            Max.
   Intercept            18758355
   AREA_SQM                23064
   AGE                     13303
   PROX_CBD             11346650
   PROX_CHILDCARE        2892127
   PROX_ELDERLYCARE      2465671
   PROX_URA_GROWTH_AREA  7384059
   PROX_MRT              1186242
   PROX_PARK             2588497
   PROX_PRIMARY_SCH      3381462
   PROX_SHOPPING_MALL   38038564
   PROX_BUS_STOP        12081592
   NO_Of_UNITS              1010
   FAMILY_FRIENDLY       2072414
   FREEHOLD              1813995
   ************************Diagnostic information*************************
   Number of data points: 1436 
   Effective number of parameters (2trace(S) - trace(S'S)): 350.3088 
   Effective degrees of freedom (n-2trace(S) + trace(S'S)): 1085.691 
   AICc (GWR book, Fotheringham, et al. 2002, p. 61, eq 2.33): 41982.22 
   AIC (GWR book, Fotheringham, et al. 2002,GWR p. 96, eq. 4.22): 41546.74 
   BIC (GWR book, Fotheringham, et al. 2002,GWR p. 61, eq. 2.34): 41914.08 
   Residual sum of squares: 2.528227e+14 
   R-square value:  0.8912425 
   Adjusted R-square value:  0.8561185 

   ***********************************************************************
   Program stops at: 2024-10-28 00:10:06.010656 

AICc the adaptive distance gwr is 41982.22 which is even smaller than the AICc of the fixed distance gwr

Visualise GWR Output

Lets break down the loooong output:

  • Condition Number: computes local collinearity (Results associated with condition numbers > 30, may be unreliable.

  • Local R2: range between 0.0 and 1.0; indicates how well the local regression model fits observed y values. Very low values indicate the local model is performing poorly. Mapping the Local R2 values to see where GWR predicts well and where it predicts poorly may provide clues about important variables that may be missing from the regression model.

  • Predicted: estimated (or fitted) y values; computed by GWR.

  • Residuals: estimated y - observed y. Standardized residuals have a avg=0, stdev = 1. A cold-to-hot rendered map of standardized residuals can be produce by using these values.

  • Coefficient Standard Error: these values measure the reliability of each coefficient estimate. Confidence in those estimates are higher when standard errors are small in relation to the actual coefficient values. Large standard errors may indicate problems with local collinearity

They are all stored in a SpatialPointsDataFrame or SpatialPolygonsDataFrame object integrated with fit.points, GWR coefficient estimates, y value, predicted values, coefficient standard errors and t-values in its “data” slot in an object called SDF of the output list.

Converting SDF into sf data.frame

condo_resale.sf.adaptive <- st_as_sf(gwr.adaptive$SDF) %>% st_transform(crs=3414)
condo_resale.sf.adaptive.svy21 <- st_transform(condo_resale.sf.adaptive, 3414)
gwr.adaptive.output <- as.data.frame(gwr.adaptive$SDF)
condo_resale.sf.adaptive <- cbind(condo_resale.sf.adaptive.svy21, as.matrix(gwr.adaptive.output))

glimpse(condo_resale.sf.adaptive)
Rows: 1,436
Columns: 105
$ Intercept                 <dbl> 2050011.67, 1633128.24, 3433608.17, 234358.9…
$ AREA_SQM                  <dbl> 9561.892, 16576.853, 13091.861, 20730.601, 6…
$ AGE                       <dbl> -9514.634, -58185.479, -26707.386, -93308.98…
$ PROX_CBD                  <dbl> -120681.94, -149434.22, -259397.77, 2426853.…
$ PROX_CHILDCARE            <dbl> 319266.925, 441102.177, -120116.816, 480825.…
$ PROX_ELDERLYCARE          <dbl> -393417.795, 325188.741, 535855.806, 314783.…
$ PROX_URA_GROWTH_AREA      <dbl> -159980.203, -142290.389, -253621.206, -2679…
$ PROX_MRT                  <dbl> -299742.96, -2510522.23, -936853.28, -203947…
$ PROX_PARK                 <dbl> -172104.47, 523379.72, 209099.85, -759153.26…
$ PROX_PRIMARY_SCH          <dbl> 242668.03, 1106830.66, 571462.33, 3127477.21…
$ PROX_SHOPPING_MALL        <dbl> 300881.390, -87693.378, -126732.712, -29593.…
$ PROX_BUS_STOP             <dbl> 1210615.44, 1843587.22, 1411924.90, 7225577.…
$ NO_Of_UNITS               <dbl> 104.8290640, -288.3441183, -9.5532945, -161.…
$ FAMILY_FRIENDLY           <dbl> -9075.370, 310074.664, 5949.746, 1556178.531…
$ FREEHOLD                  <dbl> 303955.61, 396221.27, 168821.75, 1212515.58,…
$ y                         <dbl> 3000000, 3880000, 3325000, 4250000, 1400000,…
$ yhat                      <dbl> 2886531.8, 3466801.5, 3616527.2, 5435481.6, …
$ residual                  <dbl> 113468.16, 413198.52, -291527.20, -1185481.6…
$ CV_Score                  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Stud_residual             <dbl> 0.38207013, 1.01433140, -0.83780678, -2.8461…
$ Intercept_SE              <dbl> 516105.5, 488083.5, 963711.4, 444185.5, 2119…
$ AREA_SQM_SE               <dbl> 823.2860, 825.2380, 988.2240, 617.4007, 1376…
$ AGE_SE                    <dbl> 5889.782, 6226.916, 6510.236, 6010.511, 8180…
$ PROX_CBD_SE               <dbl> 37411.22, 23615.06, 56103.77, 469337.41, 410…
$ PROX_CHILDCARE_SE         <dbl> 319111.1, 299705.3, 349128.5, 304965.2, 6987…
$ PROX_ELDERLYCARE_SE       <dbl> 120633.34, 84546.69, 129687.07, 127150.69, 3…
$ PROX_URA_GROWTH_AREA_SE   <dbl> 56207.39, 76956.50, 95774.60, 470762.12, 474…
$ PROX_MRT_SE               <dbl> 185181.3, 281133.9, 275483.7, 279877.1, 3638…
$ PROX_PARK_SE              <dbl> 205499.6, 229358.7, 314124.3, 227249.4, 3645…
$ PROX_PRIMARY_SCH_SE       <dbl> 152400.7, 165150.7, 196662.6, 240878.9, 2490…
$ PROX_SHOPPING_MALL_SE     <dbl> 109268.8, 98906.8, 119913.3, 177104.1, 30103…
$ PROX_BUS_STOP_SE          <dbl> 600668.6, 410222.1, 464156.7, 562810.8, 7409…
$ NO_Of_UNITS_SE            <dbl> 218.1258, 208.9410, 210.9828, 361.7767, 299.…
$ FAMILY_FRIENDLY_SE        <dbl> 131474.73, 114989.07, 146607.22, 108726.62, …
$ FREEHOLD_SE               <dbl> 115954.0, 130110.0, 141031.5, 138239.1, 2106…
$ Intercept_TV              <dbl> 3.9720784, 3.3460017, 3.5629010, 0.5276150, …
$ AREA_SQM_TV               <dbl> 11.614302, 20.087361, 13.247868, 33.577223, …
$ AGE_TV                    <dbl> -1.6154474, -9.3441881, -4.1023685, -15.5243…
$ PROX_CBD_TV               <dbl> -3.22582173, -6.32792021, -4.62353528, 5.170…
$ PROX_CHILDCARE_TV         <dbl> 1.000488185, 1.471786337, -0.344047555, 1.57…
$ PROX_ELDERLYCARE_TV       <dbl> -3.26126929, 3.84626245, 4.13191383, 2.47567…
$ PROX_URA_GROWTH_AREA_TV   <dbl> -2.846248368, -1.848971738, -2.648105057, -5…
$ PROX_MRT_TV               <dbl> -1.61864578, -8.92998600, -3.40075727, -7.28…
$ PROX_PARK_TV              <dbl> -0.83749312, 2.28192684, 0.66565951, -3.3406…
$ PROX_PRIMARY_SCH_TV       <dbl> 1.59230221, 6.70194543, 2.90580089, 12.98361…
$ PROX_SHOPPING_MALL_TV     <dbl> 2.753588422, -0.886626400, -1.056869486, -0.…
$ PROX_BUS_STOP_TV          <dbl> 2.0154464, 4.4941192, 3.0419145, 12.8383775,…
$ NO_Of_UNITS_TV            <dbl> 0.480589953, -1.380026395, -0.045279967, -0.…
$ FAMILY_FRIENDLY_TV        <dbl> -0.06902748, 2.69655779, 0.04058290, 14.3127…
$ FREEHOLD_TV               <dbl> 2.6213469, 3.0452799, 1.1970499, 8.7711485, …
$ Local_R2                  <dbl> 0.8846744, 0.8899773, 0.8947007, 0.9073605, …
$ Intercept.1               <dbl> 2050011.67, 1633128.24, 3433608.17, 234358.9…
$ AREA_SQM.1                <dbl> 9561.892, 16576.853, 13091.861, 20730.601, 6…
$ AGE.1                     <dbl> -9514.634, -58185.479, -26707.386, -93308.98…
$ PROX_CBD.1                <dbl> -120681.94, -149434.22, -259397.77, 2426853.…
$ PROX_CHILDCARE.1          <dbl> 319266.925, 441102.177, -120116.816, 480825.…
$ PROX_ELDERLYCARE.1        <dbl> -393417.795, 325188.741, 535855.806, 314783.…
$ PROX_URA_GROWTH_AREA.1    <dbl> -159980.203, -142290.389, -253621.206, -2679…
$ PROX_MRT.1                <dbl> -299742.96, -2510522.23, -936853.28, -203947…
$ PROX_PARK.1               <dbl> -172104.47, 523379.72, 209099.85, -759153.26…
$ PROX_PRIMARY_SCH.1        <dbl> 242668.03, 1106830.66, 571462.33, 3127477.21…
$ PROX_SHOPPING_MALL.1      <dbl> 300881.390, -87693.378, -126732.712, -29593.…
$ PROX_BUS_STOP.1           <dbl> 1210615.44, 1843587.22, 1411924.90, 7225577.…
$ NO_Of_UNITS.1             <dbl> 104.8290640, -288.3441183, -9.5532945, -161.…
$ FAMILY_FRIENDLY.1         <dbl> -9075.370, 310074.664, 5949.746, 1556178.531…
$ FREEHOLD.1                <dbl> 303955.61, 396221.27, 168821.75, 1212515.58,…
$ y.1                       <dbl> 3000000, 3880000, 3325000, 4250000, 1400000,…
$ yhat.1                    <dbl> 2886531.8, 3466801.5, 3616527.2, 5435481.6, …
$ residual.1                <dbl> 113468.16, 413198.52, -291527.20, -1185481.6…
$ CV_Score.1                <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Stud_residual.1           <dbl> 0.38207013, 1.01433140, -0.83780678, -2.8461…
$ Intercept_SE.1            <dbl> 516105.5, 488083.5, 963711.4, 444185.5, 2119…
$ AREA_SQM_SE.1             <dbl> 823.2860, 825.2380, 988.2240, 617.4007, 1376…
$ AGE_SE.1                  <dbl> 5889.782, 6226.916, 6510.236, 6010.511, 8180…
$ PROX_CBD_SE.1             <dbl> 37411.22, 23615.06, 56103.77, 469337.41, 410…
$ PROX_CHILDCARE_SE.1       <dbl> 319111.1, 299705.3, 349128.5, 304965.2, 6987…
$ PROX_ELDERLYCARE_SE.1     <dbl> 120633.34, 84546.69, 129687.07, 127150.69, 3…
$ PROX_URA_GROWTH_AREA_SE.1 <dbl> 56207.39, 76956.50, 95774.60, 470762.12, 474…
$ PROX_MRT_SE.1             <dbl> 185181.3, 281133.9, 275483.7, 279877.1, 3638…
$ PROX_PARK_SE.1            <dbl> 205499.6, 229358.7, 314124.3, 227249.4, 3645…
$ PROX_PRIMARY_SCH_SE.1     <dbl> 152400.7, 165150.7, 196662.6, 240878.9, 2490…
$ PROX_SHOPPING_MALL_SE.1   <dbl> 109268.8, 98906.8, 119913.3, 177104.1, 30103…
$ PROX_BUS_STOP_SE.1        <dbl> 600668.6, 410222.1, 464156.7, 562810.8, 7409…
$ NO_Of_UNITS_SE.1          <dbl> 218.1258, 208.9410, 210.9828, 361.7767, 299.…
$ FAMILY_FRIENDLY_SE.1      <dbl> 131474.73, 114989.07, 146607.22, 108726.62, …
$ FREEHOLD_SE.1             <dbl> 115954.0, 130110.0, 141031.5, 138239.1, 2106…
$ Intercept_TV.1            <dbl> 3.9720784, 3.3460017, 3.5629010, 0.5276150, …
$ AREA_SQM_TV.1             <dbl> 11.614302, 20.087361, 13.247868, 33.577223, …
$ AGE_TV.1                  <dbl> -1.6154474, -9.3441881, -4.1023685, -15.5243…
$ PROX_CBD_TV.1             <dbl> -3.22582173, -6.32792021, -4.62353528, 5.170…
$ PROX_CHILDCARE_TV.1       <dbl> 1.000488185, 1.471786337, -0.344047555, 1.57…
$ PROX_ELDERLYCARE_TV.1     <dbl> -3.26126929, 3.84626245, 4.13191383, 2.47567…
$ PROX_URA_GROWTH_AREA_TV.1 <dbl> -2.846248368, -1.848971738, -2.648105057, -5…
$ PROX_MRT_TV.1             <dbl> -1.61864578, -8.92998600, -3.40075727, -7.28…
$ PROX_PARK_TV.1            <dbl> -0.83749312, 2.28192684, 0.66565951, -3.3406…
$ PROX_PRIMARY_SCH_TV.1     <dbl> 1.59230221, 6.70194543, 2.90580089, 12.98361…
$ PROX_SHOPPING_MALL_TV.1   <dbl> 2.753588422, -0.886626400, -1.056869486, -0.…
$ PROX_BUS_STOP_TV.1        <dbl> 2.0154464, 4.4941192, 3.0419145, 12.8383775,…
$ NO_Of_UNITS_TV.1          <dbl> 0.480589953, -1.380026395, -0.045279967, -0.…
$ FAMILY_FRIENDLY_TV.1      <dbl> -0.06902748, 2.69655779, 0.04058290, 14.3127…
$ FREEHOLD_TV.1             <dbl> 2.6213469, 3.0452799, 1.1970499, 8.7711485, …
$ Local_R2.1                <dbl> 0.8846744, 0.8899773, 0.8947007, 0.9073605, …
$ coords.x1                 <dbl> 22085.12, 25656.84, 23963.99, 27044.28, 4104…
$ coords.x2                 <dbl> 29951.54, 34546.20, 32890.80, 32319.77, 3374…
$ geometry                  <POINT [m]> POINT (22085.12 29951.54), POINT (2565…
summary(gwr.adaptive$SDF$yhat)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
  171347  1102001  1385528  1751842  1982307 13887901 

Visualise local R2

Code
tmap_mode("view")
tmap mode set to interactive viewing
Code
tmap_options(check.and.fix = TRUE)

tm_shape(mpsz_3414) +
  tm_polygons(alpha = 0.1) +
tm_shape(condo_resale.sf.adaptive) +  
  tm_dots(col = "Local_R2",
          border.col = "gray60",
          border.lwd = 1) +
  tm_view(set.zoom.limits = c(11,14))
Warning: The shape mpsz_3414 is invalid (after reprojection). See
sf::st_is_valid
tmap_mode("plot")
tmap mode set to plotting

Visualise coefficient estimates

Code
tmap_mode("view")
tmap mode set to interactive viewing
Code
tmap_options(check.and.fix = TRUE)

AREA_SQM_SE <- tm_shape(mpsz_3414)+
  tm_polygons(alpha = 0.1) +
tm_shape(condo_resale.sf.adaptive) +  
  tm_dots(col = "AREA_SQM_SE",
          border.col = "gray60",
          border.lwd = 1) +
  tm_view(set.zoom.limits = c(11,14))

AREA_SQM_TV <- tm_shape(mpsz_3414)+
  tm_polygons(alpha = 0.1) +
tm_shape(condo_resale.sf.adaptive) +  
  tm_dots(col = "AREA_SQM_TV",
          border.col = "gray60",
          border.lwd = 1) +
  tm_view(set.zoom.limits = c(11,14))

tmap_arrange(AREA_SQM_SE, AREA_SQM_TV, asp=1, ncol=2, sync = TRUE)
Warning: The shape mpsz_3414 is invalid (after reprojection). See
sf::st_is_valid
Warning: The shape mpsz_3414 is invalid (after reprojection). See
sf::st_is_valid

To view by region,

Code
tmap_mode("plot")
tmap mode set to plotting
Code
tmap_options(check.and.fix = TRUE)

tm_shape(mpsz_3414[mpsz_3414$REGION_N=="CENTRAL REGION", ])+
  tm_polygons()+
tm_shape(condo_resale.sf.adaptive) + 
  tm_bubbles(col = "Local_R2",
           size = 0.15,
           border.col = "gray60",
           border.lwd = 1)
Warning: The shape mpsz_3414[mpsz_3414$REGION_N == "CENTRAL REGION", ] is
invalid. See sf::st_is_valid